package com.cy.deepseeksport.aiService;

import com.cy.deepseeksport.NLP.MatchInfo;
import com.cy.deepseeksport.NLP.QuestionType;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;

public interface SportsQueryAnalyzer {

    @UserMessage("""
        从用户输入中提取比赛信息：
        {{query}}
        
        要求：
        1. 识别主队和客队名称（支持中文简称和别名）
        2. 提取或推测比赛日期（基于当前日期：{{current_date}}）
        3. 响应格式：主队|客队|日期（yyyy-MM-dd或空）
        """)
    String parseMatchQuery(
            @V("current_date") String currentDate,
            @V("query")String query
    );

    // 综合提取比赛信息（支持多场比赛）


    MatchInfo extractMatchSchedule(String text);


    String extractTeamName(@UserMessage String text);

    MatchInfo extractTeamInfo(@UserMessage String text);


    String extractKeyword(@UserMessage String text);


    @UserMessage(
            """
            你是体育领域的智能回答助手
            请严格按以下规则分类用户问题：
            1. PREDICT_MATCH -> 预测、分析一场具体比赛的场景，如"预测明天NBA勇士vs湖人"
            2. SIMPLE_CHAT -> 可直接回答的客观知识问题或者打招呼之类的场景，如"上海海港的主场是哪里？"
            3. DEEP_SEARCH -> 需最新信息或复杂分析的问题，如"上海海港今年的数据？"
            4. REJECT -> 如果用户问题不是体育领域，请拒绝回答。
            当前问题：{{it}}
            
            返回的是枚举类型
            """
    )
    QuestionType classifyUserQuestion(String text);



    @UserMessage(
            """
            # 角色
            你是网络搜索关键词提取专家，体育领域的智能助手
            
            # 任务
            从用户问题中精准提取搜索关键词
            
            # 提取规则
            1. 直接使用问题中的关键短语，不做改写
            2. 保留核心名词和限定词
            3. 去除疑问词和冗余修饰语
            4. 多个关键词用空格分隔
           
            # 当前问题
            {{it}}
            """
    )
    String extractSearchExactlyKeyWord(String text);

}